package com.wind.lambda;

/**
 * Lambda表达式 基础语法测试
 *
 * @author Wind
 */
public class LambdaTest01 {
    public static void main(String[] args) {
        /*
            以前的写法 使用匿名内部类
         */
        NoRetrunNoParam noRetrunNoParam = new NoRetrunNoParam() {
            @Override
            public void method() {
                System.out.println("匿名内部类 OK!");
            }
        };
        noRetrunNoParam.method();

        /*
            无返回值无参数
         */
        NoRetrunNoParam noRetrunNoParam1 = () -> {
            System.out.println("无返回值无参数~OK!");
        };
        noRetrunNoParam1.method();

        /*
            无返回值有一个参数
         */
        NoRetrunOneParam noRetrunOneParam = (int a) -> {
            System.out.println("无返回值有一个参数：" + a);
        };
        noRetrunOneParam.method(10);

        /*
            无返回值有多个参数
         */
        NoRetrunMultiParam noRetrunMultiParam = (int a, int b) -> {
            System.out.println("无返回值有多个参数：" + (a + b));
        };
        noRetrunMultiParam.method(10, 5);

        /*
            有返回值无参数
         */
        RetrunNoParam retrunNoParam = () -> {
            return 110;
        };
        System.out.println("有返回值无参数：" + retrunNoParam.method());

        /*
            有返回值有一个参数
         */
        RetrunOneParam retrunOneParam = (int a) -> {
            return a;
        };
        System.out.println("有返回值有一个参数：" + retrunOneParam.method(120));

        /*
            有返回值有多个参数
         */
        RetrunMultiParam retrunMultiParam = (int a, int b) -> {
            return a + b;
        };
        System.out.println("有返回值有多个参数：" + retrunMultiParam.method(20, 30));
    }
}
